package m.toolkit.codegenerator.pdm;


import java.util.Date;

import m.framework.exception.SystemException;
import m.framework.utils.StringUtil;


/** 
 * 表的某一列
 * @author 王永明
 * @date date 2009-3-16 下午02:44:40 
 * 
 */
public class Column {
	public String id;//字段标识
	public String dataType;//数据类型
	public int length;//长度
	public String name;//名称
	private String code;//代码
	public boolean mandatory;//是否必填
	public String validate;
	public String comment;
	
	/**返回java命名规范的代码*/
	public final String getJavaCode(){
		return code;
	}
	
	/**返回java符合java的类型*/
	public Class getJavaType(){
		if(dataType.indexOf("char")!=-1){
			return String.class;
		}
		if(dataType.indexOf("date")!=-1){
			return Date.class;
		}
		if(dataType.indexOf("bigint")!=-1){
			return Long.class;
		}
		if(dataType.indexOf("tinyint")!=-1){
			if(this.name.startsWith("是否")){
				return Boolean.class;
			}
			return Enum.class;
		}
		if(dataType.indexOf("int")!=-1){
			return Integer.class;
		}
		throw new SystemException("无法通过"+dataType+"获取java类型");
	}
	
	public boolean dateOnly(){
		return "date".equals(dataType);
	}
	
	/**首字母大写的java代码*/
	public String getFirstUpJavaCode(){
		return StringUtil.firstUp(code);
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		
		this.code = code;
	}
	
	public String getValidate() {
		if(validate==null){
			StringBuilder sb=new StringBuilder();
			if(mandatory){
				sb.append("notNull,");
			}
			if(sb.length()>0){
				return sb.substring(0,sb.length()-1);
			}else{
				return null;
			}
			
		}
		return validate;
	}

	public void setValidate(String validate) {
		this.validate = validate;
	}

	public String getName() {
		return name;
	}

	public int getLength() {
		return length;
	}

	public void setLength(int length) {
		this.length = length;
	}

}
